home *** CD-ROM | disk | FTP | other *** search
/ NeXT Education Software Sampler 1992 Fall / NeXT Education Software Sampler 1992 Fall.iso / Mathematics / Notebooks / COSY_PAK / COSY_Notes / 02_Math_Model.ma < prev    next >
Encoding:
Text File  |  1992-06-10  |  13.2 KB  |  282 lines

  1. (*^
  2.  
  3. ::[paletteColors = 128; showRuler; currentKernel; 
  4.     fontset = title, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeTitle, center, M7, L1, e8,  28, "Times"; ;
  5.     fontset = subtitle, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeTitle, center, M7, L1, e6,  22, "Times"; ;
  6.     fontset = subsubtitle, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeTitle, center, M7, L1, e6,  16, "Times"; ;
  7.     fontset = section, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeSection, grayBox, M22, L1, a20,  22, "Times"; ;
  8.     fontset = subsection, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeSection, blackBox, M19, L1, a15,  16, "Times"; ;
  9.     fontset = subsubsection, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeSection, whiteBox, M18, L1, a12,  14, "Times"; ;
  10.     fontset = text, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1,  14, "Times"; ;
  11.     fontset = smalltext, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1,  12;
  12.     fontset = input, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeInput, M42, N23, L1,  14, "Courier"; ;
  13.     fontset = output, output, inactive, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeOutput, M42, N23,  14, "Courier"; ;
  14.     fontset = message, inactive, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeOutput, M42, N23, L1,  14, "Courier"; ;
  15.     fontset = print, inactive, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeOutput, M42, N23, L1,  14, "Courier"; ;
  16.     fontset = info, inactive, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeOutput, M42, N23, L1,  14, "Courier"; ;
  17.     fontset = postscript, PostScript, formatAsPostScript, output, inactive, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeGraphics, M7, l34, w273, h277, L1,  14, "Courier"; ;
  18.     fontset = name, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1,  12;
  19.     fontset = header, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1,  14, "Times"; ;
  20.     fontset = Left Header, inactive, nohscroll, preserveAspect, L1,  14, "Times"; ;
  21.     fontset = footer, inactive, nohscroll, noKeepOnOnePage, preserveAspect, center, M7, L1,  14, "Times"; ;
  22.     fontset = Left Footer, inactive, nohscroll, preserveAspect, center, L1,  14, "Times"; ;
  23.     fontset = help, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1,  12;
  24.     fontset = clipboard, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1,  14, "Times"; ;
  25.     fontset = completions, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1,  14, "Courier"; ;
  26.     fontset = special1, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1,  14, "Times"; ;
  27.     fontset = special2, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1,  14, "Times"; ;
  28.     fontset = special3, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1,  14, "Times"; ;
  29.     fontset = special4, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1,  14, "Times"; ;
  30.     fontset = special5, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, L1,  14, "Times"; ;]
  31. :[font = title; inactive; preserveAspect; rightWrapOffset = 531; fontColorBlue = 65535; ]
  32.  
  33. COSY_PAK
  34. Control Systems Analysis Package
  35.   for Mathematica 
  36. ;[s]
  37. 2:0,0;49,1;61,-1;
  38. 2:1,25,19,Times,1,28,0,0,65535;1,26,20,Times,3,28,0,0,65535;
  39. :[font = subtitle; inactive; preserveAspect; rightWrapOffset = 531; ]
  40.  
  41. By
  42.  C.K. Chen              N. Sreenath 
  43.   1992
  44.        
  45. :[font = message; inactive; preserveAspect; center; rightWrapOffset = 531; fontName = "Courier"; ]
  46. Systems Engineering Department
  47. Case School of Engineering
  48. Case Western Reserve University
  49. Cleveland, OH, 44106-7070
  50.  
  51. :[font = message; inactive; dontPreserveAspect; center; rightWrapOffset = 531; ]
  52.  
  53.  
  54. Support from
  55. CWRU Information and Network Services - Dr. Ray Neff
  56. Case Alumni Association
  57. The Lilly Foundation
  58. :[font = input; preserveAspect; rightWrapOffset = 531; ]
  59.  
  60.  
  61.  
  62.  
  63. :[font = subtitle; inactive; preserveAspect; rightWrapOffset = 531; ]
  64. Chapter 2 
  65. Mathematical Modeling of Dynamic Systems
  66.  
  67.  
  68. ;[s]
  69. 4:0,0;10,1;11,2;51,3;53,-1;
  70. 4:1,20,15,Times,1,22,65535,0,0;1,20,15,Times,1,22,0,0,0;1,20,15,Times,1,22,0,0,65535;1,16,12,Times,1,18,0,0,0;
  71. :[font = section; inactive; Cclosed; preserveAspect; rightWrapOffset = 531; startGroup; ]
  72. Initialization
  73. :[font = input; initialization; preserveAspect; rightWrapOffset = 531; ]
  74. *)
  75. (* Initialization of Path *)
  76.  
  77. (* Example For UNIX machine  (Default) *)   
  78.  
  79. $Path=Join[$Path,
  80.     {"~/Library/Mathematica/Packages"}];
  81.  
  82.  
  83. (* Example For IBM PC          *)
  84. (*
  85. $Path=Join[$Path,    
  86.      {"c:\winmath\packages"}];     
  87. *)     
  88.  
  89. (* Example For MAC          *)
  90. (*
  91. $Path=Join[$Path,    
  92.      {"My_Harddisk:Mathematica:Package"}];     
  93. *)     
  94. (*
  95. :[font = input; initialization; preserveAspect; rightWrapOffset = 531; endGroup; ]
  96. *)
  97. Needs["COSYPAK`chap2`"]
  98. (*
  99. :[font = section; inactive; Cclosed; preserveAspect; rightWrapOffset = 531; startGroup; ]
  100. Acknowledgements
  101. :[font = text; inactive; preserveAspect; rightWrapOffset = 531; endGroup; ]
  102. Special thanks to Brian Evans of Georgia Tech for the LaPlace transform and signal packages which is a part of the Signal Processing Packages :Copyright: Copyright 1989-1991 by Brian L. Evans, Georgia Tech Research Corporation.
  103.  
  104. :[font = section; inactive; Cclosed; preserveAspect; rightWrapOffset = 531; startGroup; ]
  105. ODE to State Space
  106. :[font = text; inactive; preserveAspect; rightWrapOffset = 531; ]
  107.     Note: Due to the lack of subscripts and superscripts in the Macintosh version of Mathematica, subscripts and superscripts will be represented with numbers located immediately after the variable.  If the subscript involves a function then the funcion will be in parenthesis immediately following the variable.  Dervatives, on the other hand, will always use parenthesis, for example, y(2) represents the second derivative of the function y.
  108.     
  109. An nth order Ordinary Differential Equation (ODE) of the form:
  110.  
  111.     y(n) + a1 y(n-1) + ... + a(n-1) y(1) + a(n) y = b0 u(n) + b1 u(n-1) + ... + b(n) u
  112.  
  113. can be represented by a first-order vector matrix differential equation:
  114.  
  115.     x(1) = Ax + Bu
  116.     y = Cx + Du
  117.  
  118. where
  119.  
  120.              x1                     0          1          0        . . .       0
  121.              x2                     0          0          1        . . .       0
  122.               .                                            .
  123.     x =      .                A =                   .
  124.               .                                            .
  125.             xn-1                     0          0          0         . . .       1
  126.             xn                       -an      -an-1     -an-2     . . .     -a1
  127.      
  128.      
  129.              B1
  130.              B2                   C =    [ 1     0     . . .     0 ]
  131.                .
  132.     B =     .
  133.                .
  134.              Bn-1                    D =    b0
  135.              Bn
  136.            
  137. with
  138.  
  139.     B0 = b0
  140.     B1 = b1 - a1B0
  141.     B2 = b2 - a1B1 - a2B0
  142.            .
  143.            .
  144.            .
  145.     Bn = bn - a1Bn-1 - . . . - an-1B1 - anb0.
  146.     
  147.          
  148. COSY_PAK Function
  149. Ode2SS[lhscoeff, rhscoeff]: Converts linear ordinary differential equation (ODE) to state space eqn. The ODE is in the format: 
  150.  
  151. y(n) + a1 y(n-1) + ... + an-1 y(1) + an y = b0 u(n) + b1 u(n-1) + ... bn-1 u(1) + bn u     
  152.  
  153. where lhscoeff = [1, a1,...,an],  rhscoeff = [b0,b1,...,bn]. If ai or bi don't exist, use ai=0 or bi=0. The output are Matrix A and Vector B in the state equation: dx/dt = A x + B u. Returns the state space matrices A and B  as {A,B}.
  154. ;[s]
  155. 15:0,0;385,1;388,2;456,3;486,4;509,5;512,6;1275,7;1292,8;1293,9;1320,10;1521,11;1529,12;1549,13;1558,14;1749,-1;
  156. 15:1,13,10,Times,0,14,0,0,0;1,13,10,Times,32,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,32,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;
  157. :[font = subsubsection; inactive; Cclosed; preserveAspect; rightWrapOffset = 531; startGroup; ]
  158. Example
  159. :[font = input; preserveAspect; rightWrapOffset = 531; startGroup; ]
  160. lcoeff = {1,a1,a2,a3};
  161. rcoeff = {b2,b3};
  162. results = Ode2SS[rcoeff,lcoeff];
  163. :[font = print; inactive; dontPreserveAspect; rightWrapOffset = 531; endGroup; endGroup; endGroup; ]
  164. The A Matrix is:  
  165.  
  166.   
  167.    0     1     0
  168.  
  169.    0     0     1
  170.  
  171.    -a3   -a2   -a1
  172.      
  173.      
  174. The B Vector is:  
  175.   
  176.    0
  177.  
  178.    b2
  179.  
  180.    -(a1 b2) + b3
  181. :[font = section; inactive; Cclosed; preserveAspect; rightWrapOffset = 531; startGroup; ]
  182. Linearization of a Nonlinear System of Equations
  183. :[font = text; inactive; preserveAspect; rightWrapOffset = 531; ]
  184.  
  185. Many systems are nonlinear but operate around a set point which my also be referred to as a nominal point or an operating point.  Using a process called linearization, a nonlinear system may be analyzed by linear methods.  One method of linearization involves the expansion of a nonlinear function about its set point into a Taylor series.  The higher terms of the expansion are dropped leaving only the linear term.
  186. :[font = text; inactive; preserveAspect; rightWrapOffset = 531; ]
  187. The nonlinear system
  188.  
  189.     y = f(x)
  190.  
  191. can be expanded about an operating point x*,y* with derivatives evaluated at x = x*:
  192.  
  193.     y = f(x) | x =x * + f(1)(x) | x =x* (x - x*) + (1/2!)f(2)(x) | x =x* (x - x*)2 + . . .
  194.  
  195. The nonlinear higer order terms may be dropped if the magnitude of x - x* is small.  This gives the above equation the form
  196.  
  197.     y = y* + K(x - x*)
  198.     
  199. with
  200.  
  201.     y* = f(x*)
  202.  
  203. and
  204.  
  205.     K = f(1)(x) | x = x*.
  206.     
  207. ;[s]
  208. 16:0,0;131,1;138,2;141,3;144,4;150,5;156,6;174,7;177,8;183,9;189,10;197,11;198,12;385,13;388,14;394,15;404,-1;
  209. 16:1,13,10,Times,0,14,0,0,0;1,13,10,Times,64,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,32,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,64,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,32,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,64,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,32,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,13,10,Times,32,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,9,7,Times,64,10,0,0,0;
  210. :[font = text; inactive; preserveAspect; rightWrapOffset = 531; ]
  211. For a system of nonlinear equations with z a vector of states, v an input, and w an output with
  212.  
  213. z(1) = f(z,v)
  214. w = h(z,v).
  215.  
  216. If 
  217.  
  218. Dz = x
  219. Dv = u
  220. Dw = y
  221.  
  222. then the linearization process can be applied to yield
  223.  
  224. x(1) = Ax + Bu
  225. y  = Cx + Du
  226.  
  227. where
  228.  
  229. f(1) = df/dz | z = z*.
  230.  
  231. ;[s]
  232. 11:0,0;129,1;130,2;136,3;137,4;143,5;144,6;250,7;251,8;253,9;254,10;267,-1;
  233. 11:1,13,10,Times,0,14,0,0,0;1,0,0,Symbol,0,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,0,0,Symbol,0,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,0,0,Symbol,0,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,0,0,Symbol,0,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,0,0,Symbol,0,14,0,0,0;1,11,8,Times,0,12,0,0,0;
  234. :[font = text; inactive; preserveAspect; rightWrapOffset = 531; ]
  235. COSY_PAK Function
  236. Linearize[ f , zvars , zpoint , vvars , vpoint]: Gives the linearization of vector function f[zvars, vvars] = {f1[zvars, vvars], ... ,fn[zvars, vvars]} around the operating point  zpoint and vpoint. The length of the state variables zvars = [x1,...,xn] must be equal to the length of the operating point zpoint = [x10,...,xn0] and the length of the control variables vvars = [v1,...,vr] must be equal to the length of the operating point vpoint = [v10,...,vr0]. Returns the linearized system matrices A and B  as {A,B}.
  237.  
  238. ;[s]
  239. 21:0,0;17,1;18,2;65,3;110,4;169,5;251,6;271,7;322,8;344,9;385,10;404,11;456,12;479,13;519,14;520,15;525,16;526,17;531,18;536,19;537,20;539,-1;
  240. 21:1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,11,8,Times,0,12,0,0,0;
  241. :[font = subsubsection; inactive; Cclosed; preserveAspect; rightWrapOffset = 531; startGroup; ]
  242. Example
  243. :[font = input; preserveAspect; rightWrapOffset = 531; startGroup; ]
  244. f={z1^2 z2 -Sin[z2]+v^3,z1 Cos[z2] + v};
  245. zvars={z1,z2}; vvars={v};
  246. zpoint={1,2};vpoint = {1};
  247. results = Linearize[f,zvars,zpoint,vvars,vpoint];
  248. (* Matrix A is in results[[1]], vector B is in results[[2]] *)
  249. :[font = print; inactive; dontPreserveAspect; rightWrapOffset = 531; endGroup; endGroup; endGroup; ]
  250. The A Matrix is:  
  251.  
  252.   
  253.    4        1 - Cos[2]
  254.  
  255.    Cos[2]   -Sin[2]
  256.      
  257.      
  258. The B Vector is:  
  259.   
  260.    3
  261.  
  262.    1
  263. :[font = section; inactive; Cclosed; preserveAspect; rightWrapOffset = 531; startGroup; ]
  264. State Space to Transfer Function
  265. :[font = text; inactive; preserveAspect; rightWrapOffset = 531; ]
  266. COSY_PAK Function
  267. SS2Transf[A,B,C,s]:  This function transforms the state space representation of system (A, B, C) to its transfer function representation. Returns the transfer function transf as a function of the Laplace variable `s'.
  268. ;[s]
  269. 7:0,0;36,1;105,2;114,3;186,4;193,5;230,6;236,-1;
  270. 7:1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;1,13,10,Times,0,14,0,0,0;1,12,9,Times,1,14,0,0,0;
  271. :[font = input; dontPreserveAspect; leftWrapOffset = 20; rightWrapOffset = 531; startGroup; ]
  272. AA={{0,1,0,0},{0,0,1,0},{0,0,0,1},{-a1,-a2,-a3,-a4}};
  273. BB={0,0,0,1};
  274. CC={1,0,0,0};
  275. results = SS2Transf[AA,BB,CC,s];
  276. (* The transfer function is in  'results' *)
  277. :[font = print; inactive; preserveAspect; rightWrapOffset = 531; endGroup; endGroup; ]
  278.                                        1
  279. The transfer function is:------------------------------
  280.                                          2       3    4
  281.                          a1 + a2 s + a3 s  + a4 s  + s
  282. ^*)